#ifndef _NE_IMAGE_MANAGER_H_
#define _NE_IMAGE_MANAGER_H_

#include <common/Singleton.h>
#include <system/ResourceManager.h>
#include <graphics/Image.h>

namespace ne
{
    class NEAPI ImageManager : public ResourceManager, public Singleton<ImageManager>
    {
        public:
            ImageManager();

            ImagePtr createImage(const std::string &name,
                                 const std::string &fileName,
                                 const uint32_t width,
                                 const uint32_t height,
                                 const uint32_t depth,
                                 const PixelFormat format,
                                 const PixelType pt=PT_UNSIGNED_BYTE);

            virtual ~ImageManager();

        public:
            static ImageManager& GetSingleton();

            static ImageManager* GetSingletonPtr();

        protected:
            Resource* createImplement(const uint64_t id,
                                      const std::string &name,
                                      const std::string &fileName,
                                      const bool isManual,
                                      ManualResourceLoader *pLoader);
    };
}

#endif
